The most common placement problems occur when labels are used or
closed structures, such as loops, are included. We've seen numerous
examples of loops. Those which involve fermions and, to a lesser extent
scalars, are most easily constructed. Re-examining the example in section
2.10.2 and the problems posed at the conclusions of sections
2.9.2, 2.10.2, and 2.12 we note one thing in common. Each involves
drawing a fermion which is the same (or a simple constant times the) length
of a gluon or photon. These make use of the various \length
parameters which are returned when a line is drawn: \gluonlengthx
,
\gluonlengthy
, \photonlengthx
, \photonlengthy
,
\fermionlengthx
, \fermionlengthy
, \scalarlengthx
, and
\scalarlengthy
, as well as \plengthx
and
\plengthy
, which correspond to the previous line.
Each of these has a sign and magnitude depending upon the direction drawn.
\fermionlength
is an especially useful additional measure whose length
is always positive and equal to the entire length of the previously
drawn fermion.
It is often more difficult to prepare loops when the statement
has been used since only the length of one line is recorded. This was evident
in the example is section 3.8.2.
It is often desirable to know the separation of two arbitrary points, perhaps on two different Feynman diagrams or between points in different sub-branches of a single diagram. Since these points will, in general, be at co-ordinates unknown to the user, the ability to perform simple arithmetic within the TEX file is needed.
TEX defines the following useful commands:
\global\advance <variable name> by <increment (number or variable)> \global\multiply <variable name> by <multiplier (number or variable)> \global\divide <variable name> by <divisor (number or variable)>where, as usual,
<,>
are not part of the syntax.
In addition provides:
\negate <variable name> \double <variable name> \multroothalf <variable name>
In each case the variable name, such as fermionlength, will be an integer and the result will be an integer (rounded). The first three add, multiply and divide respectively. The second three multiply by minus one, multiply by two, and multiply by respectively. Each represents an action, not a result. Thus to subtract Y from X you would enter
\negate\Y \global\advance \X by \Ybut not:
\global\advance \X by \negate\Y
. (For the
cognoscente you must expand the token ``negate Y'' first).
Note that LATEX defines the commands:
\newcounter{<variable name>} \setcounter{<variable name><variable value} \addtocounter{<variable name><increment>}but that
\addtocounter
should not be used with unless
the variable has been user-defined (see section 4.2) with newcounter.
As an example consider labelling the midpoint of a particle line. Suppose that the following is desired:
Where the label is at the midpoint of the photon on the lower side. The true (geometric) midpoint is at the co-ordinates (pmidx,pmidy). However if we try:
\begin{picture}(8000,8000) \drawline\photon[\NE\REG](0,0)[10] \put(\pmidx,\pmidy){$\gamma$} \end{picture}we'd produce:
One would like to move the `γ' about two millimeters to the right and about one and a half millimeters down. This may be readily accomplished with:
\begin{picture}(8000,8000) \drawline\photon[\NE\REG](0,0)[10] \global\advance\pmidx by 650 \global\advance\pmidy by -450 \put(\pmidx,\pmidy){$\gamma$} \end{picture}The exact values used are a question of style and one will frequently experiment to achieve particular æstetics.
A frequent use of multroothalf occurs when one desires to make a horizontal or vertical line the same length as a slanted line (or vice-versa). As a simple exercise, reproduce the following diagram for Delbrück scattering where all lines are of precisely the same length. Begin by drawing a photon.
As a final example we consider the following case, which is the lowest order
QED correction to Coulomb scattering of a lepton from a nucleus
which distinguishes between a positron and an electron.
Here the problem is how to space the two photon lines, which differ in length
by three half-wiggles, such that both will connect smoothly
to the fermions. To facilitate this we introduce
two new variables which are returned by and
(and also by drawloop): unitboxwidth and unitboxheight.
They are (respectively) the width and height (x and y extents) of
the smallest complete unit of the previously line.
For a gluon this is one loop, for a photon an entire wiggle,
for a scalar one segment plus one gap and for a fermion the entire length.
Of course one can equally well use a
\global\divide\gluonlengthx by <number of loops>and so forth to obtain the equivalent value. Using these the above may be quickly drawn:
\hskip 0.75in \begin{picture}(10000,10000)(0,0) \THICKLINES \drawline\photon[\NE\REG](5000,0)[6] \multiply\unitboxheight by 3 \multroothalf\unitboxheight \drawline\fermion[\E\REG](\photonbackx,\photonbacky)[\unitboxheight] \drawline\fermion[\NW\REG](\photonbackx,\photonbacky)[\fermionlength] \drawline\fermion[\N\REG](\fermionbackx,\fermionbacky)[\fermionlength] \drawline\photon[\SW\FLIPPED](\fermionfrontx,\fermionfronty)[9] \drawline\fermion[\E\REG](\photonbackx,\photonbacky)[7000] \drawline\fermion[\W\REG](\photonbackx,\photonbacky)[3000] \drawline\fermion[\E\REG](\fermionbackx,-500)[10000] \drawline\fermion[\W\REG](\fermionbackx,-1000)[10000] \end{picture}Since ``particlelengthx'', represent the extent, or increment, of the previous line they are often negative. For a gluon drawn in the SW direction, for instance, both gluonlengthx and gluonlengthy are negative. When using these to compare lengths one must generally employ the ``negate'' command. An alternative is to use boxlengthx and boxlengthy which give the absolute magnitudes of the length parameters. There are a few instances, however, where the two might not match (see the sections on stems and caps).
The placement of arrows sometimes requires fine adjustments as well. As an additional exercise try to draw the following as closely as possible. Use a 12-point document size.